import requestAPI from '../../../utils/requestApi';
Page({
  data: {
    array: ['请选择反馈类型', '景点相关', '功能异常', '优化建议', '其他'], // 反馈类型选项
    index: 0, // 默认选中 "请选择反馈类型"
    content: '', // 反馈内容
    mobile: '', // 手机号
    contentLength: 0, // 内容长度
    hasPicture: false, // 是否有图片
    picUrls: [], // 图片 URL 列表
    files: [] // 本地选择的图片文件路径
  },

  // 用户选择图片
  chooseImage: function () {
    if (this.data.files.length >= 5) {
      wx.showToast({
        title: '只能上传五张图片',
        icon: 'none'
      });
      return false;
    }

    const that = this;
    wx.chooseMedia({
      count: 5 - this.data.files.length,
      mediaType: ['image'],
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: function (res) {
        const tempFiles = res.tempFiles;
        const uploadPromises = tempFiles.map(file => {
          return new Promise((resolve, reject) => {
            wx.compressImage({
              src: file.tempFilePath,
              quality: 50,
              success: function (res) {
                const compressedFilePath = res.tempFilePath;
                requestAPI.upload('/travel/feedback/upload', compressedFilePath, 'file', {
                  'user': 'test' // 根据需要添加其他表单数据
                }).then(response => {
                  resolve(response.data.url);
                }).catch(err => {
                  reject(err);
                });
              },
              fail: function (err) {
                reject(err);
              }
            });
          });
        });
    
        Promise.all(uploadPromises)
          .then(urls => {
            that.setData({
              files: that.data.files.concat(tempFiles.map(file => file.tempFilePath)),
              picUrls: that.data.picUrls.concat(urls)
            });
            that.setData({
              hasPicture: that.data.picUrls.length > 0
            });
          })
          .catch(err => {
            wx.showToast({
              title: '图片上传失败，请稍后再试',
              icon: 'none'
            });
            console.error(err); // 打印错误信息以便调试
          });
      }
    });
  },

  // 预览图片
  previewImage: function (e) {
    wx.previewImage({
      current: e.currentTarget.id, // 当前预览图片的路径
      urls: this.data.files // 预览图片的本地路径列表
    });
  },

  // 选择反馈类型
  bindPickerChange: function (e) {
    this.setData({
      index: e.detail.value
    });
  },

  // 输入手机号
  mobileInput: function (e) {
    this.setData({
      mobile: e.detail.value
    });
  },

  // 输入反馈内容
  contentInput: function (e) {
    this.setData({
      contentLength: e.detail.cursor,
      content: e.detail.value
    });
  },

  // 提交反馈
  submitFeedback: function () {
    const that = this;

    // 表单验证
    if (this.data.index === 0) {
      wx.showToast({
        title: '请选择反馈类型',
        icon: 'none'
      });
      return;
    }
    if (!this.data.content) {
      wx.showToast({
        title: '请输入反馈内容',
        icon: 'none'
      });
      return;
    }
    if (!this.data.mobile) {
      wx.showToast({
        title: '请输入手机号',
        icon: 'none'
      });
      return;
    }
    // 添加电话号码格式验证
    if (!(/^1[3456789]\d{9}$/.test(this.data.mobile))) {
      wx.showToast({
        title: '请填入正确的电话号码',
        icon: 'none',
        duration: 1000 // 显示1秒钟
      });
      return;
    }
    // 准备数据
    const feedbackData = {
      mobile: this.data.mobile,
      feedType: this.data.array[this.data.index],
      content: this.data.content,
      hasPicture: this.data.hasPicture,
      picUrls: this.data.picUrls // 图片 URL 列表
    };

    // 使用封装的 API 方法提交反馈
    requestAPI.post('/travel/feedback/submit', feedbackData).then(response => {
      if (response.success) {
        wx.showToast({
          title: '感谢您的反馈',
          icon: 'success',
          duration: 2000
        });
        // 延迟3秒后跳转到my2页面
        setTimeout(function() {
          wx.switchTab({
            url: '/pages/my2/my2',
          });
        }, 2000);
        // 清空表单
        that.setData({
          index: 0,
          content: '',
          contentLength: 0,
          mobile: '',
          hasPicture: false,
          picUrls: [],
          files: []
        });
      } else {
        wx.showToast({
          title: '反馈提交失败，请稍后再试',
          icon: 'none'
        });
      }
    }).catch(err => {
      wx.showToast({
        title: '网络请求失败，请检查网络连接',
        icon: 'none'
      });
    });
  }
});